package com.shujia

import scala.io.Source

object Code31DataCompute {
  def main(args: Array[String]): Unit = {

    /**
     * 需求1.取出各班级中各年龄段的学生人数
     *
     */

    // 链式编程法：

    Source
      .fromFile("scala_code/data/students.txt")
      .getLines()
      // 将读取到的每一行数据转换成List中的元素
      .toList
      // 将每一行的数据进行切分，并包装
      .map(
        (line: String) => {
          val colum: Array[String] = line.split(",")
          // (id,name,age,gender,clazz)
          //  Tuple相比较Array 其元素的数据类型可以多样
          (colum(0), colum(1), colum(2).toInt, colum(3), colum(4))
        }
      )
      // 需要对数据进行分组
      .groupBy(
        // 选出分组的依据
        //        (elem:(String,String,Int,String,String)) => {}
        //        (stu) => {stu._5 + stu._3}
        stu => stu._5 + "," + stu._3
      )
      // 计算每一组中的人数
      .map(
        x => {
          val splitKey: Array[String] = x._1.split(",")
          (splitKey(0), splitKey(1), x._2.size)
        }
      )
      .toList
      // 对结果进行排序
      .sortBy(
        oneRes => oneRes._1+oneRes._2
      )
      .foreach(println)

  }
}
